/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controllers;

import beans.ListPlacas;
import beans.ListRol;
import beans.ListUsuario;
import beans.Mensaje;
import beans.Usuario;
import facade.UsuarioFacade;
import facade.VehiculoFacade;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import response.LoginResponse;

/**
 *
 * @author Ahmed
 */

@Controller
public class UsuarioController {
    private static UsuarioFacade usuarioFacade = new UsuarioFacade();
    private static VehiculoFacade vehiculoFacade = new VehiculoFacade();
  
    @RequestMapping(value = "/registrarUsuario")
    public ModelAndView RegistrarUsuario(){
        return new ModelAndView("registrarUsuario");
    }
    
    @RequestMapping(value = "/registrarUsuarioJSON.htm",method=RequestMethod.POST)
    public @ResponseBody Mensaje RegistrarUsuarioJson(@RequestBody Usuario usuario) throws AddressException, MessagingException{
        Mensaje mensaje;
        mensaje = usuarioFacade.RegistrarUsuario(usuario);
        return mensaje;
    }
    
    @RequestMapping(value= "/buscarUsuarioJSON.htm", method = RequestMethod.POST)
    public @ResponseBody ListUsuario buscarUsuarioJson(@RequestBody Usuario usuario){
        ListUsuario lista = usuarioFacade.BuscarUsuario(usuario);
        return lista;
    }
    
    @RequestMapping(value="/modificarUsuario")
    public ModelAndView ModificarUsuario(){
        return new ModelAndView("modificarUsuario");
    }
    
    @RequestMapping(value = "/modificarUsuarioJSON.htm", method = RequestMethod.POST)
    public @ResponseBody Mensaje ModificarUsuarioJson(@RequestBody Usuario usuario){
        Mensaje mensaje = usuarioFacade.ModificarUsuario(usuario);
        return mensaje;
    }
    
    @RequestMapping(value="/eliminarUsuario")
    public ModelAndView EliminarUsuario(){
        return new ModelAndView("eliminarUsuario");
    }
    
    @RequestMapping(value = "/eliminarUsuarioJSON.htm", method = RequestMethod.POST)
    public @ResponseBody Mensaje EliminarUsuarioJson(@RequestBody Usuario usuario){
        Mensaje mensaje = usuarioFacade.EliminarUsuario(usuario);
        return mensaje;
    }
    
    @RequestMapping(value = "/login.htm", method = RequestMethod.POST)
    public @ResponseBody LoginResponse login(@RequestBody Usuario usuario) {
        LoginResponse login =  usuarioFacade.LoginUsuario(usuario);
	return login;
    }
    
    @RequestMapping(value = "/roles.htm", method = RequestMethod.POST)
    public @ResponseBody ListRol listarRoles() {
        ListRol lrol = usuarioFacade.listarRoles();
	return lrol;
    }
    
    @RequestMapping(value = "/placasUsuario.htm", method = RequestMethod.POST)
    public @ResponseBody ListPlacas listarPlacasTipo(@RequestBody String placasReq) {
        System.out.println(placasReq);
        ListPlacas lplacas = vehiculoFacade.listarPlacas(placasReq);
	return lplacas;
    }
}